package vietsky.com.app;

import org.anddev.andengine.engine.Engine;
import org.anddev.andengine.engine.camera.Camera;
import org.anddev.andengine.engine.handler.IUpdateHandler;
import org.anddev.andengine.engine.options.EngineOptions;
import org.anddev.andengine.engine.options.EngineOptions.ScreenOrientation;
import org.anddev.andengine.engine.options.resolutionpolicy.RatioResolutionPolicy;
import org.anddev.andengine.entity.scene.Scene;
import org.anddev.andengine.entity.scene.background.ColorBackground;
import org.anddev.andengine.entity.sprite.Sprite;
import org.anddev.andengine.entity.util.FPSLogger;
import org.anddev.andengine.opengl.texture.TextureOptions;
import org.anddev.andengine.opengl.texture.atlas.bitmap.BitmapTextureAtlas;
import org.anddev.andengine.opengl.texture.atlas.bitmap.BitmapTextureAtlasTextureRegionFactory;
import org.anddev.andengine.opengl.texture.region.TextureRegion;
import org.anddev.andengine.ui.activity.BaseGameActivity;


public class GameActivity extends BaseGameActivity{
	 private Camera MyCamera;//Biến này thường để cấu hình màn hình 
	    private Scene MyScene;//Quản lý những gì bạn vẽ. 
	    private int WIDTH = 320;//Chiều rộng vùng hiện thị 
	    private int HEIGHT = 480;//Chiều cao vùng hiện thị 
	    private BitmapTextureAtlas bitmapTextureAtlas;//Lưu ảnh trong bộ nhớ 
	    private TextureRegion textureRegion;//Lưu khi load ảnh 
	    private Sprite sprite;//Sprite quả bóng 
	public Engine onLoadEngine() {
		this.MyCamera = new Camera(0, 0, WIDTH, HEIGHT);
		
		Engine engine = new Engine(new EngineOptions(true, ScreenOrientation.PORTRAIT, new RatioResolutionPolicy(WIDTH, HEIGHT), this.MyCamera));
		 return engine;
	}

	public void onLoadResources() {
		  this.bitmapTextureAtlas = new BitmapTextureAtlas(256, 256, TextureOptions.BILINEAR_PREMULTIPLYALPHA); 
	        //Load ảnh 
	        this.textureRegion = BitmapTextureAtlasTextureRegionFactory.createFromAsset(this.bitmapTextureAtlas, this, "ball.png", 0, 0);
	        mEngine.getTextureManager().loadTextures(this.bitmapTextureAtlas); 
		
	}

	public Scene onLoadScene() {
		 this.mEngine.registerUpdateHandler(new FPSLogger()); 
		 
	        MyScene = new Scene(); 
	        MyScene.setBackground(new ColorBackground(0.09804f, 0.6274f, 0.8784f));//Đặt màu nền 
	          
	        //Đặt sprite tại vị trí x = 100,y = 100 
	        this.sprite = new Sprite(100, 100, this.textureRegion); 
	        MyScene.attachChild(sprite);//Add vào MyScene 
	          
	        //Cập nhật (coi như vòn lặp hoạt cảnh) 
	        MyScene.registerUpdateHandler(new IUpdateHandler() {             
	           
	            public void reset() { 
	                // TODO Auto-generated method stub                 
	            } 
	              
	            boolean chuyen = false; 
	            //Muốn cập nhật cái gì thì cho vào đây 
	           
	            public void onUpdate(float pSecondsElapsed) { 
	                try { 
	                    //Tạm dừng cập nhật trong 10 ms 
	                    Thread.sleep(10); 
	                } catch (InterruptedException e) { 
	                    // TODO Auto-generated catch block 
	                    e.printStackTrace(); 
	                }     
	                //Di chuyển sang phải 
	                if(!chuyen){ 
	                    sprite.setPosition(sprite.getX()+5, 100); 
	                    if(sprite.getX() > 200)//Vượt quá giới hạn thì cho di chuyển ngược lại 
	                        chuyen = true; 
	                }else{ 
	                    sprite.setPosition(sprite.getX()-5, 100); 
	                    if(sprite.getX() < 10) 
	                        chuyen = false; 
	                } 
	            } 
	        }); 
	 
	        return MyScene; 
	}

	public void onLoadComplete() {
		// TODO Auto-generated method stub
		
	}

}
